#include<iostream>
using namespace std;
//const int N = 1e6 + 10;
//int e[N], ne[N];
//int main()
//{
//    int i;
//    cin >> i;
//    for (int j = 1; j <= i; j++)
//    {
//        e[j] = j;
//    }
//    for (int j = 1; j <= i; j++)
//    {
//        cin >> ne[j];
//    }
//    int begin;
//    cin >> begin;
//    for (int i = begin; i; i = ne[i])
//    {
//        cout << e[i] << " ";
//    }
//    return 0;
//}
//const int N = 1e6 + 10;
//int e[N], ne[N], a, b, c, n, mp[N], id, h;
//int Find(int a)
//{
//    return mp[a];
//}
//void Push_Back(int a, int b)
//{
//    int pos = Find(a);
//    id++;
//    mp[b] = id;
//    ne[id] = ne[pos];
//    ne[pos] = id;
//    e[id] = b;
//}
//void chaxun(int a)
//{
//    int pos = Find(a);
//    if (ne[pos] == 0)
//    {
//        cout << 0 << endl;
//        return;
//    }
//    else
//    {
//        cout << e[ne[pos]] << endl;
//    }
//}
//void Pop_Back(int a)
//{
//    int pos = Find(a);
//    if (ne[pos] != 0)
//    {
//        ne[pos] = ne[ne[pos]];
//    }
//}
//int main()
//{
//    e[0] = 0, ne[0] = 1;
//    id = 1;
//    e[1] = 1;
//    mp[id] = 1;
//    ne[1] = 0;
//    cin >> n;
//    for (int i = 0; i < n; i++)
//    {
//        cin >> c;
//        if (c == 1)
//        {
//            cin >> a >> b;
//            Push_Back(a, b);
//        }
//        else if (c == 2)
//        {
//            cin >> a;
//            chaxun(a);
//        }
//        else
//        {
//            cin >> a;
//            Pop_Back(a);
//        }
//    }
//    return 0;
//}
//const int N = 1e5 + 10;
//int e[N], ne[N], pre[N], mp[N];
//int id, h, k, p, i, n, pos, M, x;
//int main()
//{
//    e[0] = 0, ne[0] = 1, pre[0] = 1;
//    id++;
//    e[1] = 1, ne[1] = 0, pre[1] = 0, mp[1] = id;
//    cin >> n;
//    for (i = 2; i <= n; i++)
//    {
//        cin >> k >> p;
//        if (p == 0)
//        {
//            pos = mp[k];
//            id++;
//            mp[i] = id;
//            e[id] = i;
//            ne[id] = pos;
//            pre[id] = pre[pos];
//            ne[pre[pos]] = id;
//            pre[pos] = id;
//        }
//        else {
//            pos = mp[k];
//            id++;
//            mp[i] = id;
//            e[id] = i;
//            ne[id] = ne[pos];
//            pre[id] = pos;
//            pre[ne[pos]] = id;
//            ne[pos] = id;
//        }
//    }
//    cin >> M;
//    while (M--)
//    {
//        cin >> x;
//        pos = mp[x];
//        if (pos == 0)
//            continue;
//        else
//        {
//            ne[pre[pos]] = ne[pos];
//            pre[ne[pos]] = pre[pos];
//            mp[x] = 0;
//        }
//    }
//    i = 0;
//    for (i = ne[i]; i; i = ne[i])
//    {
//        cout << e[i] << " ";
//    }
//    return 0;
//}
//const int N = 110;
//int n, m;
//int ne[N];
//int main()
//{
//    cin >> n >> m;
//    for (int i = 1; i < n; i++)
//    {
//        ne[i] = i + 1;
//    }
//    ne[n] = 1;
//    int tmp = n;
//    for (int i = 0; i < n; i++)
//    {
//        for (int j = 1; j < m; j++)
//        {
//            tmp = ne[tmp];
//        }
//        cout << ne[tmp] << " ";
//        ne[tmp] = ne[ne[tmp]];
//    }
//    return 0;
//}